/*
 * projectile.h
 *
 *  Created on: Oct 20, 2009
 *      Author: scott
 */

#ifndef PROJECTILE_H_
#define PROJECTILE_H_

class Projectile
{
	/* Projectile Abstract Base Class
	 * All other Projectiles are derived from this.
	 */
public:
	virtual void move() =0;
	virtual void die() =0;
	virtual void set_damage(int) =0;
	virtual void set_width(int) =0;
	virtual void set_height(int) =0;
	virtual void set_speed(int) =0;
	virtual int get_damage() =0;
	virtual int get_width() =0;
	virtual int get_height() =0;
	virtual int get_speed() =0;
	virtual int get_x() =0;
	virtual int get_y() =0;
	virtual ~Projectile(){}
};

class BasicProjectile: public Projectile
{
	/* Basic Projectile Class.
	 * Shoots plain bullets.
	 */
private:
	int x,y,w,h,damage,speed;
public:
	BasicProjectile();
	~BasicProjectile();
	void move();
	void die();

	//Inlined Functions
	void set_damage(int p){damage=p;}
	void set_width(int p){w=p;}
	void set_height(int p){h=p;}
	void set_speed(int p){speed=p;}
	int get_damage(){return damage;}
	int get_width(){return w;}
	int get_height(){return h;}
	int get_speed(){return speed;}
	int get_x(){return x;}
	int get_y(){return y;}
};

#endif /* PROJECTILE_H_ */
